/*
 * @Author: 晟松
 * @Date: 2021-12-13 23:18:02
 * @LastEditors: 晟松
 * @LastEditTime: 2021-12-15 11:45:40
 * @FilePath: \mini-vue3d:\Code\node\koa2\volunteer-service\src\main\model\Message.js
 * @Description: 发送消息给单个用户，包括全局消息和用户私人消息
 */
import Sequelize from "sequelize";
import { isPhone, isValidateEnum } from "@main/util/ValidateUtil";
import { ParamError } from "../common/CommonError";

export const modelName = "message";

const DataTypes = Sequelize.DataTypes;

export const attributes = {
    // 要发送给一个用户的消息
    toId: {
        type: DataTypes.INTEGER,
    },
    // 发送给用户的身份
    toIdentity: {
        type: DataTypes.INTEGER,
        // 不允许为空
        // allowNull: false,
        validate: {
            check(val) {
                if (!isValidateEnum(val, "identity")) {
                    throw new ParamError(`identity：${val}值错误`);
                }
            },
        },
    },
    fromId: {
        type: DataTypes.INTEGER,
    },
    // 发送给用户的身份
    fromIdentity: {
        type: DataTypes.INTEGER,
        validate: {
            check(val) {
                if (!isValidateEnum(val, "identity")) {
                    throw new ParamError(`identity：${val}值错误`);
                }
            },
        },
    },
    title: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    // message可谓普通文本，也可为富文本
    message: {
        type: DataTypes.STRING(2000),
    },
    // 这两个是关于区块链的一个记录，主要是记录其中的交易hash和块hash，通过这两个hash就可从区块链中获取到对应的信息
    transactionHash: DataTypes.STRING,
    blockHash: DataTypes.STRING,
};

export const options = {
    // tableName: "t_user_reference",
};
